/*
 * CuentaUsuario.java
 *
 * Created on 28 de febrero de 2007, 10:27 AM
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package everest3.usuarios;

import javax.swing.JOptionPane;
import tablasYBasesdeDatos.Conexion;

import java.util.Vector; 
import javax.swing.JDialog;
/**
 * Clase que hace los procesos de cuentas de usuario (creacion, modificacion,consulta)
 * por medio de la conexion a una base de datos
 * @author Julian Libreros Cardona
 */
public class CuentaUsuario {
    
    /**
     * Constructor de la clase CuentaUsuario
     */
    public CuentaUsuario() 
    {
    }
    
    /**
     * Metodo que permite crear o modificar un usuario
     * @param login El login del usuario
     * @param nombreUsuario El nombre del usuario
     * @param tipoUsuario Tipo de usuario
     * @param password password del usuario
     * @param parent padre para los dialogos
     * @param tipo define si es insercion o modificacion
     * @return 1 si se inserto o modifico, 0 si hubo un error
     */
    public static int actualizarUsuario(String login, String nombreUsuario, String tipoUsuario, String password, javax.swing.JDialog parent, int tipo)
    {
       Conexion con = new Conexion();
       String sql =""; 
       String msg1 ="", msg2="";
        con.conectar("everest","postgres","root");
        switch(tipo)          
        {
            case 0: {
                        sql = "INSERT INTO cuentasusuario VALUES('"+         
                        login+"','"+nombreUsuario+"','"+tipoUsuario+"','"
                        +everest3.crypto.MD5.MD5(password)+"')";
                        msg1 = "insert\u00f3";
                        msg2 = "insertar";
                    }
                
                    break;
                   
            case 1: 
                    {
                        sql = "UPDATE cuentasusuario "+
                        "SET nombreusuario='"+nombreUsuario+"',"+
                        " tipousuario='"+tipoUsuario+"', password='"+everest3.crypto.MD5.MD5(password)+"' "+
                        "WHERE login='"+login+"'";
                        msg1 = "modific\u00f3";
                        msg2 = "modificar";
                        
                    }
        }
                
        int res = con.actualizar(sql);
        if(res == 0)
	{
		JOptionPane.showMessageDialog(parent, "Error al "+msg2+" en la base de datos." +
                                                     "\nEl usuario con el login \""+login+
                                                     "\" ya existe.",
                                                       "Error",javax.swing.JOptionPane.WARNING_MESSAGE);	
	}
	else
	{
		JOptionPane.showMessageDialog(parent, "Se "+msg1+" correctamente "+
                                                    " el usuario con el login \""+login+"\".");	
	}
	
        con.hacerCommit();
	con.desconectar();        
       
        return res;
    }

    /**
     * Metodo que busca un usuario que concuerde con el login y el password ingresados
     * @param login El login del usuario a buscar
     * @param password El password del usuario a buscar
     * @return Un objeto <CODE>java.util.Vector</CODE> con los datos del usuario, <CODE>null</CODE>
     * si no se encontro coincidencia
     */
    public static java.util.Vector consultarUsuario(String login, String password)
    {
        tablasYBasesdeDatos.JDBCAdapter obj = new tablasYBasesdeDatos.JDBCAdapter(
                                                "jdbc:postgresql://localhost:5432/everest",
                                                 "org.postgresql.Driver","postgres","root");
        
        if(password!=null) 
            return obj.ConsultaIndividual("SELECT login,nombreusuario,tipousuario FROM cuentasusuario WHERE login = '"+
                                login+"' AND password = '"+everest3.crypto.MD5.MD5(password)+"'");
        
        else
             return obj.ConsultaIndividual("SELECT login,nombreusuario,tipousuario FROM cuentasusuario WHERE login = '"+
                                login+"'");
    }
    
    public static boolean consultarUsuario(String login)
    {
        tablasYBasesdeDatos.JDBCAdapter obj = new tablasYBasesdeDatos.JDBCAdapter(
                                                "jdbc:postgresql://localhost:5432/everest",
                                                 "org.postgresql.Driver","postgres","root");
        
        java.util.Vector vec = obj.ConsultaIndividual("SELECT login FROM cuentasusuario WHERE login = '"+login+"'");
        
        return vec.isEmpty();
    }
  
}
